#include <iostream>
#include "..\Modulos\CLogica.h"


int main(){
float arancel = 100;
Socio * socn1= new Normal(55555555,"Norm1",80.0,30.0);          //100+80+30
Socio * socn2= new Normal(11111111,"Norm2",80.0,30.0);          //100+80+30
Socio * socn3= new Normal(77777777,"Norm3",80.0,20.0);          //100+80+20
Socio * socn4= new Normal(44444444,"Norm4",80.0,0.0);           //100+80
                                                                //=800
Fecha fech1(5,5,2010);
Fecha fech2(30,12,2009);
Fecha fech3(1,1,2011);
Fecha fech4(28,2,2010);
Fecha fech5(10,10,2013);

Socio * socb1= new Becado(22222222,"Bec1",80.0,1,fech1);        //100+24
Socio * socb2= new Becado(66666666,"Bec2",80.0,2,fech2);        //100+40
Socio * socb3= new Becado(33333333,"Bec3",80.0,3,fech3);        //100+24
Socio * socb4= new Becado(99999999,"Bec4",80.0,4,fech4);        //100+24
                                                                //=512

Socio * soce1= new Especial(88888888,"Esp1",80.0,1,fech1,20);   //100+24-20
Socio * soce2= new Especial(12345678,"Esp2",80.0,2,fech5,30);   //100+24-30
                                                                //=214

                                                                //=>1510

/////////////////////////////////////////////////////////////////

CapaLogica CL(arancel);
Coche * coche1 = new Coche("ZZ11","FIAT","Uno",((Normal *)socn1));
Coche * coche2 = new Coche("XXX1","FIAT","128",((Normal *)socn2));
float tick;
TipoError error;

CL.ingresaSocio(socn1,coche1,tick,error);
CL.ingresaSocio(socn2,coche2,tick,error);
CL.ingresaSocio(socn3,NULL,tick,error);
CL.ingresaSocio(socn4,NULL,tick,error);
CL.ingresaSocio(socb1,NULL,tick,error);
CL.ingresaSocio(socb2,NULL,tick,error);
CL.ingresaSocio(socb3,NULL,tick,error);
CL.ingresaSocio(socb4,NULL,tick,error);
CL.ingresaSocio(soce1,NULL,tick,error);
CL.ingresaSocio(soce2,NULL,tick,error);


    cout << "1 - Verificacion de insercion del socio con ced 00000000 \n";
    if(error==SOCIO_YA_EXISTE)
        cout << "      El socio NO fue insertado correctamente\n";
    else{
        cout << "      El socio fue insertado correctamente\n";
        cout << "      Su ticket es: " << tick;
    }

    Socio * soce3= new Especial(12345678,"Esp2",80.0,2,fech2,30);
    cout << "\n\n2 - Tratamos de insertar socio 12345678 repetido\n";
    CL.ingresaSocio(soce3,NULL,tick,error);
    cout << "    Verificacion de insercion del socio con ced 12345678 \n";
    if(error==SOCIO_YA_EXISTE)
        cout << "      El socio NO fue insertado correctamente\n\n";
    else{
        cout << "      El socio fue insertado correctamente\n";
        cout << "      Su ticket es: " << tick;
    }

    Iterador * IterS;
    IterS = CL.listadoSocios();
    cout << "\n3 - Se lleno Iterador de Socios\n";
    Iterador * IterC;
    IterC = CL.listadoCoches();
    cout << "\n4 - Se lleno Iterador de Coches\n";
    cout << "\n5 - Se calculo monto total recaudado: " << CL.recaudacion();

    cout << "\n\n6 - Se buscara Becado con Mayor Fecha Vencimiento\n";
    Becado * BecM;
    CL.becadoMayorVencimiento(BecM,error);
    if(error==NO_EXISTE_BECADO)
        cout << "      NO habia becados\n";
    else{
        cout << "      Habia Becados, la operacion se realizo CORRECTAMENTE \n";
        cout << "      El becado con mayor vencimiento es: " << BecM->getCedula();
    }

    cout << "\n\n7 - Se buscaran datos del socio con ced 88888888 y se calculara su ticket\n";
    Socio * soce12;
    float ticket_soce12;
    CL.datosSocio(88888888,soce12,ticket_soce12,error);
    if(error==NO_EXISTE_SOCIO)
        cout << "      Dicho Socio NO existia\n";
    else{
        cout << "      Socio Existia, la operacion se realizo CORRECTAMENTE \n";
        cout << "      Su ticket es: " << ticket_soce12;
    }

    cout << "\n\n8 - Se buscaran datos del coche con mat XXX1\n";
    Coche * cocheAux;
    CL.datosCoche("XXX1",cocheAux,error);
    if(error==NO_EXISTE_COCHE)
        cout << "      Dicho coche NO existia\n";
    else
        cout << "      Coche existia, la operacion se realizo CORRECTAMENTE \n";

    return 0;
}
